package model;

import model.player.Dealer;
import model.player.Player;

/**
 * Die Spielklasse besteht im model lediglich aus einem Dealer, der die öffentlichen und den beiden Spielern
 * die die persönlichen Kartenstapel verwalten.
 * Außerdem werden hier die Spielrunden abgehandelt.
 * 
 * @author max
 */
public class Game {
	
	private Dealer dealer;
	private Player pl1;
	private Player pl2;
	
	private int turn; //Zählt die Runden. Bei ungeraden Zügen (turn = 1,3,5..) ist Spieler 2 dran!
	
	/**
	 * Spiel erstellen und bei erstem Zug für Spieler 1 beginnen.
	 */
	public Game() {
		dealer = new Dealer(this);
		pl1 = new Player(dealer);
		pl2 = new Player(dealer);
		
		try {
			dealer.initialDeal(pl1, pl2); //Die Spielrunde beginnen und Karten verteilen
		}
		catch (Exception e) {
			//Wird in der drüberliegenden Ebene gecatcht
		}
		
		turn = 0; //Spieler 1 beginnt immer
	}
	
	/**
	 * Setzt den "Zug"-zähler um einen Wert weiter.
	 * Es ist immer der jeweils andere Spieler dran, ob er nun die Karten aufnehmen muss oder selbst eine legt,
	 * sollte diese Methode aufgerufen werden.
	 * @return Der Index des Zuges nach dem inkrementieren
	 */
	public int nextTurn() {
		return turn++;
	}
	/**
	 * Mit dieser Methode kann für einen Spieler pl geprüft werden,
	 * ob er am Zuge ist
	 * @param pl Der Spieler, für den geprüft werden soll.
	 */
	public boolean myTurn(Player pl) {
		if (pl.equals(pl1))	return (turn%2==0);
		else return (turn%3==0);
	}

}
